AWS Fargate
AWS Fargate to w pełni zarządzana usługa uruchamiania kontenerów firmy Amazon, dostępna w ramach platformy Amazon Web Services (AWS). Umożliwia uruchamianie i skalowanie kontenerów bez konieczności zarządzania infrastrukturą serwerową, co czyni ją rozwiązaniem typu serverless computing w kontekście aplikacji kontenerowych.
Historia i kontekst
Usługa Fargate została wprowadzona do oferty AWS w 2017 roku. Jej powstanie było odpowiedzią na rosnące zapotrzebowanie na uproszczone modele wdrażania Docker oraz Kubernetes w środowisku chmurowym. Fargate współpracuje z dwoma głównymi usługami zarządzania kontenerami w AWS:
Architektura
W modelu Fargate użytkownik definiuje definicję zadania (task definition) lub podu (pod definition), określając obrazy kontenerów, zasoby (CPU, pamięć) oraz parametry sieciowe. Po uruchomieniu, Fargate automatycznie przydziela niezbędną infrastrukturę pod spodem – wirtualne maszyny, storage oraz sieć – i dba o ich utrzymanie oraz aktualizacje.
Kluczowe elementy architektury to:
- Izolacja na poziomie kontenerów – każdy kontener działa w odrębnej, bezpiecznej jednostce obliczeniowej.
- Skalowalność „na żądanie” – skalowanie w górę i w dół odbywa się automatycznie w oparciu o metryki, np. obciążenie CPU.
- Integracja z usługami monitoringu, takimi jak Amazon CloudWatch i AWS X-Ray.
Kluczowe cechy
- Brak zarządzania serwerami – nie trzeba konfigurować, aktualizować ani utrzymywać klastrów EC2.
- Rozliczanie za rzeczywiste użycie – płaci się jedynie za zużycie CPU i pamięci w granicach sekund.
- Bezpieczna izolacja – każdy zadanie uruchamiane jest w odrębnej jednostce izolowanej przez hypervisor.
- Wsparcie dla wielu sieci – Fargate może korzystać z Amazon VPC, co umożliwia precyzyjne definiowanie reguł sieciowych.
- Integracja z CI/CD – łatwa integracja z narzędziami takimi jak AWS CodePipeline i AWS CodeBuild w celu automatyzacji wdrożeń.
Zastosowania
Fargate znajduje zastosowanie w wielu scenariuszach, między innymi:
- Budowanie architektury mikrousług bez konieczności zarządzania klastrami.
- Wykonywanie krótkotrwałych zadań wsadowych i przetwarzania danych (np. ETL).
- Uruchamianie aplikacji webowych oraz API w modelu serverless.
- Testowanie i środowiska deweloperskie, w których szybkość provisioning jest kluczowa.
Porównanie z innymi rozwiązaniami
W porównaniu z tradycyjnym modelem Amazon EC2, Fargate eliminuje potrzebę wyboru typu instancji i jej skalowania. W stosunku do własnych klastrów Kubernetes działających na EC2, Fargate oferuje:
- Niższy poziom operacyjny (nie ma potrzeby zarządzania węzłami).
- Szybszy czas uruchomienia zadania (zwykle < 1 minuty).
- Większą opłacalność przy zmiennych obciążeniach.
Jednakże, w przypadku bardzo stabilnych obciążeń o wysokiej wydajności, klasyczne EC2 lub dedykowane klastry Kubernetes mogą okazać się bardziej ekonomiczne.
Ograniczenia i koszty
Choć Fargate zapewnia dużą wygodę, wiąże się z pewnymi ograniczeniami:
- Ograniczenia w wyborze parametrów zasobów – dostępne tylko wybrane kombinacje CPU i pamięci.
- Brak dostępu do niektórych funkcji EC2, np. niestandardowych dysków EBS o wysokiej wydajności.
- Wyższy koszt jednostkowy w stosunku do długotrwałych, dobrze dopasowanych instancji EC2.